package fachadas;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import pergunta.EstatisticaPergunta;
import pergunta.Pergunta;
import repositorio.PerguntasRepositorio;

/**
 *
 * @author Diego
 */
public class FachadaDePerguntas {
    
    private static FachadaDePerguntas fachada;
    private PerguntasRepositorio repositorio;
    
    static{
        fachada = new FachadaDePerguntas();
    }
    
    public FachadaDePerguntas(){
        repositorio = new PerguntasRepositorio();
    }
    
    public static FachadaDePerguntas getInstance() {
        return fachada;
    }
    
    public boolean inserirPergunta(Pergunta p) {
       return repositorio.inserirPergunta(p);
    }
    
    public void inserirTema(String tema) throws SQLException{
        repositorio.inserirTema(tema);
    }
    
    public List<String> atualizarTema(){
        return repositorio.atualizarTemas();
    }
    
    public List<Pergunta> pegarPerguntas(int tema,int dificuldade){
        return repositorio.pegaPerguntas(tema, dificuldade);
    }
    
    public String pegarTema(int codigoDoTema){
        return repositorio.pegarTema(codigoDoTema);
    }
    
    public List<String> listarRespostas(List<Pergunta> listaDePergunta){
            List<String> retorno = new ArrayList();
            String aux;
            int i = 0;
            Pergunta p;
            
            do{
                p = listaDePergunta.get(i);
                aux = repositorio.pegarResposta(p.getId_pergunta());
                retorno.add(aux);
                i++;
            }while(i < listaDePergunta.size());
            
            return retorno;
    }
    
    public void atualizarEstatisticas(int codigo,int acertos,int erros,int totalRespondido){
                repositorio.atualizarEstatisticas(codigo, acertos, erros, totalRespondido);
     }
        
     public void atualizarRanking(int codigo,int acertos){
            repositorio.atualizarRanking(codigo, acertos);
     }
     
     public List listarEstatisticas(int codigo){
            return repositorio.listarEstatisticas(codigo);
     }
     
     public List listarUsuariosDoRanking(){
         return repositorio.listarUsuariosDoRanking();
     }
     
     public List listarPosicoesDoRanking(){
         return repositorio.listarPosicoesDoRanking();
     }
     
     public List listarTemas() throws SQLException{
         return repositorio.listarTemas();
     }

    public void atualizarEstatisticasDetalhadas(List<Pergunta> listaDePerguntasRespondidas, int idUsuario) {
        repositorio.atualizarEstatisticasDetalhadas(listaDePerguntasRespondidas, idUsuario);
     }
    
    public List<Pergunta> obterEstatisticasDetalhadas(int idUsuario)
    {
        return repositorio.obterEstatisticasDetalhadas(idUsuario);
    }
    
    public Pergunta obterPerguntaPorId(int idPergunta)  
    {
        return repositorio.pegaPergunta(idPergunta);
    }

}
